import java.util.Arrays;

public class Test {


    //8.实现一个方法 printArray, 以数组为参数, 循环访问数组中的每个元素, 打印每个元素的值.
    public static void printArray(int array[]){
        for (int i = 0; i <array.length ; i++) {
            System.out.println(array[i]);
        }
    }
    public static void main(String[] args) {
        int[] array = {1,2,32,14,5,56};
        printArray(array);
    }
    //7.创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100
    public static void main7(String[] args) {
        int[] array = new int[100];
        for (int i = 0; i < 100; i++) {
            array[i] = i + 1;
        }
        System.out.println(Arrays.toString(array));

    }
    //6.递归求解汉诺塔问题
    public static void hanota(int n,char pose1,char pose2,char pose3){
        if(n == 1){
            move(pose1,pose2);
            return;
        }
        hanota(n-1,pose1,pose3,pose2);
        move(pose1,pose3);
        hanota(n-1,pose2,pose1,pose3);
    }
    public static void move(char pos1,char pose2){

        System.out.print(pos1 + "->" + pose2+" ");
    }

    public static void main6(String[] args) {
        hanota(1,'A','B','C');
        System.out.println();
        hanota(2,'A','B','C');
        System.out.println();
        hanota(3,'A','B','C');
    }
    //5.递归求斐波那契数列的第 N 项
    public static int fib(int n) {
        if(n == 1 || n == 2) {
            return 1;
        }
        return fib(n-1) + fib(n - 2);
    }
    public static void main5(String[] args) {
        System.out.println(fib(6));
    }

    //4.写一个递归方法，输入一个非负整数，返回组成它的数字之和
    public static int sum1(int n) {
        if(n <= 9) {
            return n;
        }
        return n % 10 +sum1(n / 10);
    }
    public static void main4(String[] args) {
        System.out.println(sum1(123));
    }
    //3.按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4) （递归）
    public static void fanc(int n){
        if(n <= 9) {
            System.out.println(n % 10);
            return ;
        }
        fanc(n / 10);
        System.out.println(n % 10);
    }
    public static void main3(String[] args) {
        fanc(1234);
    }
    //2.递归求 1 + 2 + 3 + ... + 10
    public static int sum(int n) {
        if(n == 1) {
            return 1;
        }
        return n + sum(n - 1);
    }
    public static void main2(String[] args) {
        System.out.println(sum(10));
    }
    //1.递归求 N 的阶乘
    public static int fac(int n) {
        if( n == 1) {
            return 1;
        }
        return n * (fac(n - 1));
    }
    public static void main1(String[] args) {
        System.out.println(fac(5));
    }
}
